package com.dunjx;

import io.jsonwebtoken.*;
import org.junit.Test;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class jwt {

    @Test
    public void createToken(){
        // 构建jwt令牌的对象
        JwtBuilder builder = Jwts.builder();
        builder.setIssuer("敦佳星");//颁发者
        builder.setIssuedAt(new Date());// 颁发时间O
        builder.setSubject("JWT令牌测试");// 主题信息
        // 签名  （算法，秘钥）
        builder.signWith(SignatureAlgorithm.HS256,"123456");
        Date date = new Date(System.currentTimeMillis() + 20000); // 当前时间加上20秒
        //builder.setExpiration(date);// 过期时间
        /*自定义载荷*/
        Map<String, Object> data = new HashMap<>();
        data.put("name","刘荣华");
        data.put("sex","女");
        builder.addClaims(data); //自定义载荷 注意类型
        String token = builder.compact(); // 令牌
        System.out.println(token);
    }
    /**
     *     令牌解析
     */
    @Test
    public  void parseToken(){
        String token = "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiLmlabkvbPmmJ8iLCJpYXQiOjE2MjA4MzA4NTgsInN1YiI6IkpXVOS7pOeJjOa1i-ivlSIsInNleCI6IuWlsyIsIm5hbWUiOiLliJjojaPljY4ifQ.BxkqRXnir8ord3ycIYmsvzuY35JNQXtkcpEXyBTia9U";

        Claims body = Jwts.parser()
                .setSigningKey("123456") // 秘钥
                .parseClaimsJws(token) // 要解析的令牌
                .getBody();  // 获取解析之后的数据

        System.out.println(body.toString());


    }

}
